/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.uniceub.fsw.tutorial.dao;

import br.uniceub.fsw.arquitetura.persistencia.dao.BaseDAO;
import br.uniceub.fsw.arquitetura.persistencia.dao.ConstrutorSQL;
import br.uniceub.fsw.tutorial.vo.InstrutorVO;
import java.io.Serializable;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

/**
 *
 * @author Gabriel
 */

public class InstrutorDAO extends BaseDAO<InstrutorVO> {




    @Override
    public void inserir(InstrutorVO entidade) {

        ConstrutorSQL query = new ConstrutorSQL();

        query.append("INSERT INTO TB_INSTRUTOR(NO_INSTRUTOR)");
        query.append("VALUES (?)");

        List<?> parametros = criarParametros(entidade.getNoInstrutor());

        Integer idGerado = (Integer) executarInsercao(query.toString(), parametros);

        entidade.setIdInstrutor(idGerado);
    }
     @Override
    public void alterar(InstrutorVO entidade) {

        ConstrutorSQL query = new ConstrutorSQL();

        query.append("UPDATE TB_INSTRUTOR SET NO_INSTRUTOR = ?");
        query.append("WHERE ID_INSTRUTOR = ?");

        List<?> parametros = criarParametros(entidade.getNoInstrutor(), entidade.getIdInstrutor());

        executarAlteracao(query.toString(), parametros);
    }
    @Override
    public void excluir(InstrutorVO entidade) {

        ConstrutorSQL query = new ConstrutorSQL();

        query.append("DELETE FROM TB_INSTRUTOR");
        query.append("WHERE ID_INSTRUTOR = ?");

        executarAlteracao(query.toString(), criarParametros(entidade.getIdInstrutor()));
    }
    @Override
    public InstrutorVO consultarPorId(Serializable id) {

        InstrutorVO instrutor = null;

        ConstrutorSQL query = new ConstrutorSQL();

        query.append("SELECT * FROM TB_INSTRUTOR T WHERE T.ID_INSTRUTOR = ?");

        instrutor = consultarUm(query.toString(), criarParametros(id));

        return instrutor;
    }
    @Override
    public List<InstrutorVO> consultarPorExemplo(InstrutorVO exemplo) {

        List<InstrutorVO> listaRetorno = null;

        ConstrutorSQL query = new ConstrutorSQL();

        query.append("SELECT * FROM TB_INSTRUTOR T WHERE 1=1");

        mapearQueryParaExemplo(query, exemplo);

        listaRetorno = consultar(query.toString(), recuperarParametros());

        return listaRetorno;
    }
    @Override
    protected InstrutorVO extrairObjetoResultado(ResultSet rs) throws SQLException {

        InstrutorVO instrutor = new InstrutorVO();
        
        instrutor.setIdInstrutor(rs.getInt("ID_INSTRUTOR"));
        instrutor.setNoInstrutor(rs.getString("NO_INSTRUTOR"));
        
        return instrutor;
    }
    @Override
    protected void mapearQueryParaExemplo(ConstrutorSQL query, InstrutorVO exemplo) {

        if (exemplo.getNoInstrutor() != null && exemplo.getNoInstrutor().trim().length() > 0) {
            query.append("AND T.NO_INSTRUTOR LIKE ?");
            adicionarParametro("%" + exemplo.getNoInstrutor() + "%");
        }

    }

}


